PHP程序员要掌握的技能
6年前
842
0
新手们别吓到,这只是一个比较全面的学习流程,也并不一定要依据这样来学习,但是学习PHP的领域就是这样的。
作为一名web开发者来说,不论是php还是java web,就我目前掌握的知识来说,个人认为应该掌握以下几个方面的内容:
必备技能必备技能
- 基础的编程语言,这个好像是废话
- 软件设计的思想,如面向对象、mvc、各种设计模式等等
- web服务器的配置、优化,如apache、nginx
- 关系型数据库,现在mysql比较流行
- 非关系型数据库,如memcache、redis、MongoDB
- http协议 tcp/ip协议
- web高并发下的解决方案
- linux系统,最低要求会写shell
- 掌握一门其他语言(这个在有些人貌似是不必要的,但我觉得还是挺有好处的)
- 正则表达式
- web前端技术如js div+css(非必要)
- GIT,Composer
上面所说的知识点每一个都值得大书特书,下面我尽我能力详细的罗列,并对每一个技术点写一篇专门的博客做解答
首先是第一点,对自己熟悉语言的理解。这个是基本且是最难的,拿php来说,包括基本函数、内置方法、数组的掌握,底层运行原理的掌握、任意一个框架的构建思想、甚至包括php如何与web服务器的通信原理等等还包括设计其他数据结构和常用技术的知识点,下面开始详细介绍
php知识点:
- php常用的处理数字、时间、字符串、文件和数组的函数,如果非要说一个标准的话大约要记住50个
- php的编码规范
- 类中的基础知识(如魔术方法、静态属性、对象赋值、继承、多态等等概念的理解和语法使用)
- 对cookie和session的理解(这个放到http中归类也是可以的)
- 队列的作用及实际使用场景
- php与web服务器的通信原理(也就是所谓的php-fpm/cgi/fastcgi/sapi这些让人搞不清的概念之间的关系)
- 跨域的解决
- 传值与传引用的区别以及使用场景
- web安全方面的解决方案
- php在处理超大数据方面的解决方法(平时我没用到过,面试中经常会问到)
- 重定向
- try/catch
- 如何捕获服务器异常,如404
- php的垃圾回收机制
- 路由实现机制
关于软件设计思想
这一部分是php技能的升级版,在掌握了任何一门语言的基础语法知识后都不可避免的会设计到架构设计方面的问题,小到一个功能的思路设计大到整个框架底层的实现,这都是我们长期实践和思考得来的宝贵财富,需要我们遵循一定的思想及模式来方便我们工作,如面向对象编程、设计模式等等
- 对面向对象的理解
- 对任意一个成熟框架的底层架构了解
- 尽可能多的掌握设计模式并熟练运用
- 现在力所不能及的软件设计思想,有一次听一个朋友说起过,后来忘了,境界不在一个层次上面,只记得这个名词了,以后在讲解
数据库mysql
知识面实在太大,几乎是我力所不能及的,只能是尽我所能的尽可能的罗列
- 数据库三大范式,平时根本不会在意,也就面试的时候可能会用到
- 常用sql语句的熟练掌握(这是基础也是重中之重,比如 limit、having/where 、group by、join、子查询等等的使用 )
- 存储引擎的选用(即异同)
- 对索引的理解(非常非常重要,极其值得大书特书)及常用的sql语句的优化
- 对数据类型的掌握(如int(5)/int(10)的区别,varchar(10)/varchar(100)的区别,我相信这个问题大多数人也是不清楚的,区别是不同的吆)
- 读写分离的延迟解决方案
- 数据穿透的解决方案
- 事务和锁(非常重要)
- 隔离级别(这个平时大部分人不会注意,因为都用默认的,但面试的时候会问到)
- 分库分表
Linux操作系统
权限,文件系统,硬盘分区,用户,组,shell脚本,软件安装(rpm,tarball,yum),vim,系统服务,防火墙,lamp和lnmp环境搭建等。
大型网站集群架构
高可用,负载均衡,反向代理,CDN,MySQL主从复制,读,写分离,MongoDB,分布式文件系统,session共享,Nginx高并发服务器等。